//
//  KinematicSim.h
//  TrackingSim
//
//  Created by Garrett Manka on 11/25/11.
//  Copyright (c) 2011. All rights reserved.
//

#ifndef TrackingSim_KinematicSim_h
#define TrackingSim_KinematicSim_h

#include <sim/Player.h>

namespace Utilities
{
    class Clock;
}

namespace Sim
{
    class Scenario;
    
    class KinematicSim
    {
    private:
        
        KinematicSim();
        KinematicSim(Scenario* scenario);
        ~KinematicSim();
        
    public:
        
        static void create(Scenario* scenario);
        static KinematicSim* getKS();
        
        Scenario* getScenario() const;
        
        void update();
        void update( double dt );
        bool updateNeeded() const;
        Utilities::Clock* getClock() const;
        
    private:
        
        static KinematicSim* s_the_instance;
        static bool s_instance_created;
        
        Scenario* m_scenario;
        Utilities::Clock* m_clock;
    
    };
}

#endif
